<?php

class Membre{
	//ATTRIBUTS
	private $mail;
	private $nom;
	private $prenom;
	private $mdp;
	//CONSTRUCTEUR
	public function __construct($ma,$no,$pre,$pass){
		$this->mail = $ma ;
		$this->nom = $no ;
		$this->prenom = $pre ;
		$this->mdp=$pass;
	}

	//METHODES
	//getteurs
	public function getConnexion(){
		return $this->connexion;
	}
	public function getMail(){
		return $this->mail;
	}

	public function getNom(){
		return $this->nom;
	}

	public function getPrenom(){
		return $this->prenom;
	}

	public  function getPass(){
		return $this->mdp;
	}

	//Retourne -1 si le mail n'eiste pas, 0 si le mdp est faux, 1 si tout bon
	public function existeMembre(){
		if ($this->existMail()){
			$dbh=new Connexion();
			$dbh=$dbh->pdo();
			try {
				// On envois la requète
				$select = $dbh->prepare("SELECT mdp FROM Membre WHERE mail=?"); //dbh est dans connexion.php
				$select->execute(array($this->mail));
				$result=$select->fetch();
				if ($result['mdp']==$this->mdp){
					return 1;

				} 
				else{
					return 0;
				}
					
			} catch ( Exception $e ) {
				echo "Une erreur est survenue lors de la récupération : ", $e->getMessage();
			}
		}
		else{
			return -1;
		}
	}

	//RETOURNE -1 si le membre n'existe pas, 1 si il est organisateur d events a venir, 0 sinon
	public function estOrganisateur(){
		if ($this->existMail()){
			$dbh=new Connexion();
			$dbh=$dbh->pdo();
			try {
				// On envois la requète
				$select = $dbh->prepare("SELECT COUNT(*) FROM Evenement WHERE organisateur=? AND dateDebut>=CURDATE() AND statut!=?"); //dbh est dans connexion.php
				$select->execute(array($this->mail,1));
				$result=$select->fetch();
				if ($result[0]>0){
					return 1;

				}
				else{
					return 0;
				}
					
			} catch ( Exception $e ) {
				echo "Une erreur est survenue lors de la récupération : ", $e->getMessage();
			}
		}
		else{
			return -1;
		}
	}
	public function existMail(){
		$dbh=new Connexion();
		$dbh=$dbh->pdo();
		try {
			// On envois la requète
			$select = $dbh->prepare("SELECT COUNT(*) FROM Membre WHERE mail=?"); //dbh est dans connexion.php
			$select->execute(array($this->mail));
			$result=$select->fetch();
			if ($result[0]==0){
				return false;
			}
			else{
				return true;
			}

		} catch ( Exception $e ) {
			echo "Une erreur est survenue lors de la recuperation : ", $e->getMessage();
		}
	}

	//RETOURNE 5 si le mail existe deja
	//RETOURNE 1 SI L AJOUT A ETE FAI
	//SINON PROBLEME
	public function save(){
		//Retourne true si l'ajout a ete fait
		$dbh=new Connexion();
		$dbh=$dbh->pdo();
		if (!$this->existMail()){
			$req = $dbh->prepare("INSERT INTO Membre(mail,nom,prenom,mdp) VALUES(?,?,?,?)");
			try{
				$req=$req->execute(array($this->mail,$this->nom,$this->prenom,$this->mdp));
				return $req;
			} catch (Exception $e){
				echo 'Erreur de requète : ', $e->getMessage();
			}
		}
		else{
			return 5;
		}
	}



	public function afficheListeMembres(){
		try {
			$dbh=new Connexion();
			$dbh=$dbh->pdo();
			$tab=array();
			$req = $dbh->prepare("SELECT nom,prenom,mail FROM Membre");
			$req->execute(array());
			// On indique que nous utiliserons les résultats en tant qu'objet

			// Nous traitons les résultats en boucle
			while( $tuple=$req->fetch(PDO::FETCH_OBJ) )
			{
				$tab[]=new Membre($tuple->mail,$tuple->nom,$tuple->prenom,'');
			}
			return $tab;
		} catch ( Exception $e ) {
			echo "Une erreur est survenue lors de la récupération : ", $e->getMessage();
		}
	}
	
	//MEMBRES INSCRITS A UN EVENEMeNT PASSE EN PARAMETRE
	public function afficheListeMembresEvenement($num){
		try {
			$dbh=new Connexion();
			$dbh=$dbh->pdo();
			$tab=array();
			$req = $dbh->prepare("SELECT membre FROM contientMembre WHERE evenement=?");
			$req->execute(array($num));
			// On indique que nous utiliserons les résultats en tant qu'objet
		
			// Nous traitons les résultats en boucle
			while( $tuple=$req->fetch(PDO::FETCH_OBJ) )
			{
				$reqq=$dbh->prepare("SELECT nom,prenom FROM Membre WHERE mail=?");
				$reqq->execute(array($tuple->membre));
				$reste=$reqq->fetch(PDO::FETCH_OBJ);
				$tab[]=new Membre($tuple->membre,$reste->nom,$reste->prenom,'');
			}
			return $tab;
		} catch ( Exception $e ) {
			echo "Une erreur est survenue lors de la récupération : ", $e->getMessage();
		}
	}


	public function AfficheMesEvenements(){
		try{
			$dbh=new Connexion();
			$dbh=$dbh->pdo();
			$tab = array();
			$prepare = $dbh->prepare("SELECT nom,dateDebut,dateFin FROM Evenement WHERE organisateur=? ");
			$prepare->execute(array($this->mail));
			// Nous traitons les r�sultats en boucle
			while ($tuple = $prepare->fetch(PDO::FETCH_OBJ)) {
				$tab[] = new Evenement($tuple->nom, $tuple->dateDebut, $tuple->dateFin, '','');
			}
			return $tab;
		} catch (Exception $e) {
			echo "Une erreur est survenue lors de la r�cup�ration : ", $e->getMessage();
		}
	}



	public function toString(){
		return "<tr><td> " . $this->nom . " </td><td> " . $this->prenom . " </td><td><a href=\"./EnvoiMail/index.php?mail=".urlencode($this->mail)."\"> " . $this->mail . " </a></td></tr>";
	}

}

?>
